//设计雇员Employee类，记录雇员的情况，包括姓名、年薪、受雇时间，
// 要求定义MyDate类作为受雇时间，其中包括工作的年、月、日，并用相应的方法对Employee类进行设置。
//编写测试类测试Employee类。

// 日期类：用于表示受雇时间（年、月、日）
class MyDate {
	private int year;   // 年
	private int month;  // 月
	private int day;    // 日

	// 构造方法：初始化年、月、日
	public MyDate(int year, int month, int day) {
		// 简单的日期合法性校验（实际应用中可更复杂）
		if (year > 0 && month >= 1 && month <= 12 && day >= 1 && day <= 31) {
			this.year = year;
			this.month = month;
			this.day = day;
		} else {
			System.out.println("日期格式无效，已默认设置为2000-1-1");
			this.year = 2000;
			this.month = 1;
			this.day = 1;
		}
	}

	// 格式化日期输出
	public String getDateInfo() {
		return year + "年" + month + "月" + day + "日";
	}
}

// 雇员类：记录雇员信息
class Employee {
	private String name;    // 姓名
	private double salary;  // 年薪
	private MyDate hireDate;// 受雇时间

	// 构造方法：初始化雇员信息
	public Employee(String name, double salary, MyDate hireDate) {
		this.name = name;
		this.salary = salary;
		this.hireDate = hireDate;
	}

	// 设置姓名
	public void setName(String name) {
		this.name = name;
	}

	// 设置年薪
	public void setSalary(double salary) {
		if (salary >= 0) {
			this.salary = salary;
		} else {
			System.out.println("年薪不能为负数，未更新");
		}
	}

	// 设置受雇时间
	public void setHireDate(MyDate hireDate) {
		this.hireDate = hireDate;
	}

	// 显示雇员信息
	public void showInfo() {
		System.out.println("雇员信息：");
		System.out.println("姓名：" + name);
		System.out.println("年薪：" + salary + "元");
		System.out.println("受雇时间：" + hireDate.getDateInfo());
		System.out.println("---------------------");
	}
}

// 测试类：测试Employee类功能
public class EmployeeTest {
	public static void main(String[] args) {
		// 创建两个日期对象（受雇时间）
		MyDate date1 = new MyDate(2020, 3, 15);
		MyDate date2 = new MyDate(2018, 9, 2);

		// 创建两个雇员对象
		Employee emp1 = new Employee("张三", 120000, date1);
		Employee emp2 = new Employee("李四", 150000, date2);

		// 显示初始信息
		emp1.showInfo();
		emp2.showInfo();

		// 修改雇员信息并再次显示
		emp1.setSalary(130000);  // 涨薪
		emp2.setName("李小四");   // 修改姓名
		System.out.println("修改后的信息：");
		emp1.showInfo();
		emp2.showInfo();
	}
}
